﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using RESTServices.Persistencia;
using System.Data.SqlClient;
using RESTServices.Dominio;
using System.ServiceModel.Web;
using System.Net;

namespace RESTServices
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "Empleados" en el código, en svc y en el archivo de configuración a la vez.
    public class Empleados : IEmpleados
    {
        EmpleadoDAO dao = new EmpleadoDAO();


        public Dominio.Empleado CrearEmpleado(Dominio.Empleado empleadoACrear)
        {
            string dni =Convert.ToString(empleadoACrear.DNI);
            Empleado existe =ObtenerEmpleadoDNI(dni);
            if (existe != null)
                throw new WebFaultException<MensajeError>(
                    new MensajeError()
                    {
                        Codigo = "E01",
                        Mensaje = "El empleado ya se encuentra registrado"
                    },
                    HttpStatusCode.InternalServerError);
            return dao.Crear(empleadoACrear);
        }

        public Dominio.Empleado ObtenerEmpleado(string codigo)
        {
            int x = int.Parse(codigo);
            return dao.Obtener(x);
        }

        public Dominio.Empleado ObtenerEmpleadoDNI(string dni)
        {
            int x = int.Parse(dni);
            return dao.ObtenerDNI(x);
        }


        public Empleado ObtenerEmpleadoUsuario(string usuario)
        {
            return dao.ObtenerUsuario(usuario);
        }

        public Dominio.Empleado ModificarEmpleado(Empleado empleadoAModificar)
        {
            //int x =Convert.ToInt32(empleadoAModificar.Codigo);
            //return dao.Modificar(dao.Obtener(x));
            return dao.Modificar(empleadoAModificar);
        }

        public void EliminarEmpleado(string codigo)
        {
            int x = int.Parse(codigo);
            dao.Eliminar(dao.Obtener(x));
        }


        public List<Dominio.Empleado> ListarEmpleados()
        {
            return dao.ListarTodos().ToList();
        }

        public int IdCorrelativo()
        {
            return dao.ObtenerIdCorrelativo();
        }
    }
}
